home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / network / atre12.zip / LF.ZIP / LFWIN.C < prev    next >
C/C++ Source or Header  |  1991-07-05  |  4KB  |  160 lines

  1. /*****************************
  2. * Windows Support File for
  3. * LF.C
  4. ******************************/
  5.  
  6. #include <windows.h>
  7. #include "lfwin.h"
  8. #include "lfdlg.h"
  9.  
  10. extern BOOL NEAR PASCAL main(HWND, LPSTR, LPSTR);
  11. long FAR PASCAL WndProc (HWND, WORD, WORD, LONG);
  12. BOOL FAR PASCAL AboutDlgProc (HWND, WORD, WORD, LONG);
  13.  
  14. HANDLE hInst;
  15. FARPROC lpitAbout;
  16.  
  17. LPSTR szInFile;
  18. LPSTR szOutFile;
  19.  
  20. #pragma argsused
  21.  
  22. int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance,
  23.                    LPSTR lpszCmdLine, int nCmdShow)
  24.  
  25. {
  26.     static char szAppName[] = "LF";
  27.     HWND hwnd;
  28.     MSG msg;
  29.     WNDCLASS wndclass;
  30.  
  31.     if (!hPrevInstance)
  32.         {
  33.         wndclass.style          = CS_HREDRAW | CS_VREDRAW;
  34.         wndclass.lpfnWndProc    = WndProc;
  35.         wndclass.cbClsExtra     = 0;
  36.         wndclass.cbWndExtra     = 0;
  37.         wndclass.hInstance      = hInstance;
  38.         wndclass.hIcon          = LoadIcon(hInstance, "lfico");
  39.         wndclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
  40.         wndclass.hbrBackground  = GetStockObject(WHITE_BRUSH);
  41.         wndclass.lpszMenuName   = "MENU_RESOURCE";
  42.         wndclass.lpszClassName  = szAppName;
  43.  
  44.         RegisterClass(&wndclass);
  45.         }
  46.  
  47.     else
  48.         {
  49.         MessageBox(NULL, "LF is already running!", "LF", MB_OK);
  50.         return FALSE;
  51.         }
  52.  
  53.  
  54.     hInst = hInstance;
  55.  
  56.     hwnd = CreateWindow(szAppName,                     /* Class */
  57.                         "LF",                          /* Title */
  58.                         WS_OVERLAPPEDWINDOW,           /* Style */
  59.                         CW_USEDEFAULT, CW_USEDEFAULT,  /* x, y */
  60.                         240,180,                       /* xsize, ysize */
  61.                         NULL,                          /* parent */
  62.                         NULL,                          /* class menu */
  63.                         hInstance,                     /* creator */
  64.                         NULL);                         /* Params */
  65.  
  66.  
  67.     ShowWindow(hwnd, nCmdShow);
  68.     UpdateWindow(hwnd);
  69.  
  70.     lpitAbout = MakeProcInstance((FARPROC)AboutDlgProc, hInst);
  71.  
  72.     while (GetMessage(&msg, NULL,0,0))
  73.         {
  74.         TranslateMessage(&msg);
  75.         DispatchMessage(&msg);
  76.         }
  77.  
  78.     return /* msg.wParam */ FALSE;
  79. }
  80.  
  81.  
  82. long FAR PASCAL WndProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  83.  
  84.    {
  85.    HANDLE hMenu, hSysMenu;
  86.    static int cRun = 0;
  87.  
  88.    switch (message)
  89.  
  90.     {
  91.  
  92.  
  93.     case WM_COMMAND:
  94.         hMenu = GetMenu(hwnd);
  95.         hSysMenu = GetSystemMenu(hwnd, 0);
  96.         switch (wParam)
  97.             {
  98.             case IDM_EXIT:
  99.                 DestroyWindow(hwnd);
  100.                 break;
  101.  
  102.             case IDM_RUN:
  103.                 szOutFile = "lf.out";
  104.                 szInFile = "lf.in";
  105.                 EnableMenuItem(hMenu, IDM_EXIT, MF_GRAYED);
  106.                 EnableMenuItem(hSysMenu, SC_CLOSE, MF_GRAYED);
  107.                 EnableMenuItem(hMenu, IDM_RUN, MF_GRAYED);
  108.                 DrawMenuBar(hwnd);
  109.                 cRun ++;
  110.                 SetWindowText(hwnd, (LPSTR) szInFile);
  111.                 if (!main(hwnd, szInFile, szOutFile))
  112.                     {
  113.                     cRun --;
  114.                     MessageBeep(0);
  115.                     MessageBox(hwnd,"Could not run LF", "LF Error", MB_OK);
  116.                     }
  117.                 cRun --;
  118.  
  119.                 if (!cRun)
  120.                     {
  121.                     EnableMenuItem(hMenu, IDM_EXIT, MF_ENABLED);
  122.                     EnableMenuItem(hSysMenu, SC_CLOSE, MF_ENABLED);
  123.                     EnableMenuItem(hMenu, IDM_RUN, MF_ENABLED);
  124.                     }
  125.                 DrawMenuBar(hwnd);
  126.                 break;
  127.  
  128.             case IDM_ABOUT:
  129.                 DialogBox(hInst,
  130.                           MAKEINTRESOURCE(IDD_ABOUT),
  131.                           hwnd,
  132.                           lpitAbout);
  133.                 break;
  134.             }
  135.         break;
  136.  
  137.     case WM_DESTROY:
  138.         PostQuitMessage(0);
  139.         break;
  140.  
  141.     default:
  142.         return DefWindowProc(hwnd,message,wParam,lParam);
  143.     }
  144.    return 0L;
  145.    }
  146.  
  147. #pragma argsused
  148.  
  149. BOOL FAR PASCAL AboutDlgProc (HWND hdlg, WORD message, WORD wParam, LONG lParam)
  150.    {
  151.    switch (message)
  152.        {
  153.        case WM_COMMAND:
  154.            EndDialog(hdlg, TRUE);
  155.            return TRUE;
  156.        default:
  157.            return FALSE;
  158.        }
  159.    }
  160.